package com.back.service;

import com.back.entity.Company;
import com.back.dto.CompanyDTO;
import com.back.vo.CompanyVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 *  企业服务接口
 * </p>
 *
 * @author liyang
 * @since 2025-04-26
 */
public interface ICompanyService extends IService<Company> {

    /**
     * 获取企业列表
     * @param page 分页对象
     * @param industry 行业
     * @param status 认证状态
     * @param keyword 关键词
     * @return 分页企业列表
     */
    IPage<CompanyVO> getCompanyList(Page<Company> page, String industry, String status, String keyword);

    /**
     * 获取企业详情
     * @param id 企业ID
     * @return 企业详情
     */
    CompanyVO getCompanyDetail(Long id);

    /**
     * 创建企业
     * @param companyDTO 企业信息
     * @param userId 用户ID
     * @return 创建的企业信息
     */
    CompanyVO createCompany(CompanyDTO companyDTO, Long userId);

    /**
     * 更新企业信息
     * @param id 企业ID
     * @param companyDTO 企业信息
     * @return 更新后的企业信息
     */
    CompanyVO updateCompany(Long id, CompanyDTO companyDTO);

    /**
     * 删除企业
     * @param id 企业ID
     * @return 是否成功
     */
    boolean deleteCompany(Long id);

    /**
     * 上传企业Logo
     * @param id 企业ID
     * @param logoUrl Logo URL
     * @return 更新后的Logo URL
     */
    String uploadLogo(Long id, String logoUrl);

    /**
     * 上传营业执照
     * @param id 企业ID
     * @param licenseUrl 营业执照URL
     * @return 更新后的营业执照URL
     */
    String uploadBusinessLicense(Long id, String licenseUrl);

    /**
     * 检查用户是否有该企业的操作权限
     * @param companyId 企业ID
     * @param userId 用户ID
     * @return 是否有权限
     */
    boolean checkCompanyPermission(Long companyId, Long userId);
}
